/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dados;

import java.util.ArrayList;
import java.util.GregorianCalendar;

public abstract class Receita{
    
       
    public static final int COMPART_O = 1;
    public static final int COMPART_R = 2;
    public static final int COMPART_NENHUM = 3;
    
    public static final int RECEITA_NORMAL = 1;
    public static final int RECEITA_ESPECIAL = 2;
    public static final int RECEITA_RENOVAVEL = 3;

    
    private Medico medico;
    private Utente utente;
    private String consulta;
    private GregorianCalendar data;
    private int comparticipacao;
    private String cod_postal;
    private String localidade;
    
    
    public Receita(){
        data = new GregorianCalendar();
        comparticipacao = COMPART_NENHUM;
        
    }
    
    public Receita(Medico m, Utente u, 
            String c, GregorianCalendar d,int compart, ArrayList<? extends Medicamento> meds){
        medico = m.clone();
        utente = u.clone();
        consulta = c;
        data = d;
        comparticipacao = compart;
    }
    
    public Receita(Receita r){
        medico = r.getMedico();
        utente = r.getUtente();
        consulta = r.getConsulta();
        data = r.getData();
        comparticipacao = r.getComparticipacao();
        
    }

    public int getComparticipacao() {
        return comparticipacao;
    }

    public String getConsulta() {
        return consulta;
    }

    public GregorianCalendar getData() {
        return data;
    }

    public Medico getMedico() {
        return medico.clone();
    }

    public Utente getUtente() {
        return utente.clone();
    }

    public String getCod_postal() {
        return cod_postal;
    }

    public String getLocalidade() {
        return localidade;
    }
    
    
    

    public void setComparticipacao(int comparticipacao) {
        this.comparticipacao = comparticipacao;
    }

    public void setConsulta(String consulta) {
        this.consulta = consulta;
    }

    public void setData(GregorianCalendar data) {
        this.data = data;
    }


    public void setMedico(Medico medico) {
        this.medico = medico;
    }

    public void setUtente(Utente utente) {
        this.utente = utente;
    }


    public void setCod_postal(String cod_postal) {
        this.cod_postal = cod_postal;
    }

    public void setLocalidade(String localidade) {
        this.localidade = localidade;
    }

    
    
    
    
    public abstract Receita clone();
    
    public boolean equals(Object o){
        Receita r = (Receita) o;
        
        if(o==this) 
            return true;
        if(o==null) 
            return false;
        if(this.getClass()!= o.getClass())
            return false;
        return this.getComparticipacao() == (r.getComparticipacao()) &&
                this.getConsulta().equalsIgnoreCase(r.getConsulta()) && this.getData().equals(r.getData()) 
                && this.getMedico().equals(r.getMedico()) && this.getUtente().equals(r.getUtente());
                
    
    }
    
    
}
